#include "app_max30102.h"

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

static void app_max30102_task(void* pvParameters);

max30102_handle_t max30102_handle;

void app_max30102_init(i2c_master_bus_handle_t i2c_bus_handle)
{
    max30102_handle = max30102_init(i2c_bus_handle);

    xTaskCreate(app_max30102_task, "max30102_task", 1024 * 4, NULL, 24, NULL);
}

void app_max30102_message_handler(uint8_t* data, uint16_t len)//解析
{
    if (data[0] == 0x03)
    {
        if (data[1] == 0x01)
        {
            //返回类型 0x01返回espnow 0x02返回mqtt  0xff返回all
            max30102_set_return_type(max30102_handle, data[2]);
        }
    }
}



static void app_max30102_task(void* pvParameters)
{
    uint16_t bpm;
    float spo2;

    // 5s读取一次数据
    while (1)
    {
        max30102_start(max30102_handle);//启动传感器
        max30102_read_data(max30102_handle);//读取传感器数据
        max30102_get_bmp_spo2(max30102_handle, &bpm, &spo2);// 获取心率和血氧数据
        printf("bpm:%d, spo2:%.2f\n", bpm, spo2);// 打印心率和血氧数据
        max30102_stop(max30102_handle);// 停止传感器
        vTaskDelay(5000);// 延时 5000 毫秒（5 秒）
    }
}